package com.jimikongjian.dao;

import com.jimikongjian.models.Comment;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * Created by fuxiuyang on 17/2/20.
 */
public interface IComment {

    /**
     * 通过评论的id号，获取某一评论信息
     * @param id
     * @return List<Comment>
     */
    public List<Comment> getCommentListById(int id);

    /**
     * 通过评论的id号，获取某一评论的信息
     * @param id
     * @return Comment
     */
    public Comment getCommentById(int id);

    /**
     * 通过某个文章的id的评论
     * @param articleId
     * @param start
     * @param length
     * @return List<Comment>
     */
    public List<Comment> getCommentListByArticleId(@Param("articleId") int articleId,
                                                   @Param("start") int start,
                                                   @Param("length") int length);

    /**
     * 通过某个文章的id和被评论者的id评论
     * @param articleId
     * @param start
     * @param length
     * @return List<Comment>
     */
    public List<Comment> getCommentListByArticleIdAndCommentParentId(@Param("articleId") int articleId,
                                                                     @Param("commentParentId") int commentParentId,
                                                                     @Param("start") int start,
                                                                     @Param("length") int length);

    /**
     * 通过某个文章的id和评论者的id获取评论
     * @param articleId
     * @param start
     * @param length
     * @return List<Comment>
     */
    public List<Comment> getCommentListByArticleIdAndCommentId(@Param("articleId") int articleId,
                                                               @Param("commentId") int commentId,
                                                                @Param("start") int start,
                                                                @Param("length") int length);

    /**
     * 插入一条新的评论信息
     * @param comment
     */
    public void insertComment(Comment comment);

    /**
     * 更新一条新的评论信息
     * @param comment
     */
    public void updateComment(Comment comment);

    /**
     * 将评论的被评论数+1
     * @param comment
     */
    public void addCommentedCountByCommentParentId(Comment comment);

    /**
     * 删除一条评论信息
     * @param comment
     */
    public void deleteComment(Comment comment);
}
